| x |
|---|
| YEAR |
| STATEFIP |
| PUMA |
| PERNUM |
| PERWT |
| MIGRATE1 |
| MIGRATE1D |
| MIGPLAC1 |
| MIGPUMA1 |
IPUMS Analysis
IPUMS Migration Data
I emailed Stephan Whitaker to see if he could provide me the dataset highlighting the flows and he was unable to. But he did send me the following instructions on how to use the IPUMS dataset that might help highlight the trend.
Unfortunately, I didn’t get permission to release the gross flows. If I was going to try to make those myself with public data, I would take these steps:
Download 5 or 10 years of ACS microdata from IPUMS. Select the migration variable, year, PUMAs, MIGPUMAs and person weights.
Drop everyone who hasn’t moved in the last year based on the value in the migration variable.
Merge on lists of PUMAs and MIGPUMAs in the Minneapolis MSA.
Drop any mover who has both a Minneapolis MIGPUMA and a Minneapolis PUMA (those are local moves you’re not interested in).
Sum up the person weights within each year for movers with a Minneapolis MIGPUMA. That’s an annual estimate of out-migration from the metro.
Sum up the person weights within each year for movers with a Minneapolis PUMA. That’s the annual estimate of in-migrants.
So, that’s what I’m going to do here.
First, let’s import the dataset.
This is a massive dataset. It contains rows with the following variables;
Here are the definitions of those variables.
| Variable | Definition |
|---|---|
| YEAR | Census year |
| STATEFIP | State (FIPS Code) |
| PUMA | Public Use Microdata Area |
| PERNUM | Person number in sample unit |
| PERWT | Person weight |
| MIGRATE1 | Migration status 1 year - general version |
| MIGRATE1D | Migration status 1 year - detailed version |
| MIGPLAC1 | State or country of residence 1 year ago |
| MIGPUMA1 | PUMA of resident 1 year ago |
Filter data
There are multiple steps I’m taking here.
- Remove non-movers: Remove individuals that have not moved at all or are unknown.
- Categorize PUMAs and MIGPUMAs into logical taxonomies;
Metro vs Greater MN: this just aggregates all PUMA and MIGPUMA into whether they are in the seven county metro vs. the rest of Minnesota.
Metro vs. Refined Greater MN: this will aggregate PUMAs into a seven county metro category and aggregate the other PUMAs into something that mimics the plannig regions of Minensota - NW, NE, Central, SW, SE PUMAS.
Remove non-movers
First, we need to get rid of anyone that hasn’t moved at all for each census year. We will use the MIGRATE1 variable which has the following codes;
0 - N/A
1 - Same house a year ago
2 - Moved within state since a year ago
3 - Moved between states since a year ago
4 - Abroad one year ago
9 - Unknown
So, let’s filter out everyone that is either 0, 1, or 9. In order to decrease the size of the file, I have already filtered these out when I submitted my request for the data. So my dataset doesn’t have any individuals that were categorized as such.
Categorize PUMAs and MIGPUMAs
The two primary variables IPUMS uses to track inflow and outflow of migration is PUMA and MIGPUMA. PUMA identifies the Public Use Microdata Area (PUMA) where the housing unit was located. PUMAs are the smallest geographic units identified in Public Use Microdata Samples since 1990 for both the decennial censuses and the ACS/PRCS. To help maintain the confidentiality of respondents in public use microdata, every PUMA must, by design, have at least 100,000 residents at the time of the corresponding census.
Note: PUMA codes are state-dependent. The PUMA codes for 1990 and later samples are unique only within each state, so a single code may identify different PUMAs in different states. To uniquely identify all PUMAs, it is necessary to combine the PUMA variable with a state identifier (STATEFIP or STATEICP). The IPUMS-defined 1960 PUMA codes are unique across all states and do not have this requirement.
The definitions of Migration Public Use Microdata Areas (Migration PUMAs) are used in ACS and PRCS samples to identify where respondents moved from. See the MIGPUMA1 variable description for more information.
Here are the codes that represent the PUMAs.
And here are the migration puma codes that cross reference the PUMA codes.
Unfortunately, the PUMA and MIGPUMA codes from 2010 to 2021 don’t compare nicely to 2022.
The maps below provide the PUMA and migration PUMA boundaries from 2010 to 2021 and than 2022’s version. We notice that the migraiton PUMAs fit into each or within multiple PUMA boundaries for each of the year breakdowns. So there is no problem compaing PUMA and migration PUMA.
Unfortunately, the PUMA boundaries change too much in order to compare the 2010-2021 PUMA with the 2022 PUMA.